package cn.uikit.demo.utils

import android.content.Context
import android.util.Log
import java.io.File
import java.io.FileWriter
import java.io.IOException
import java.text.SimpleDateFormat
import java.util.*

object LogToFile {

    private const val LOG_FILE_NAME = "app_logs.txt"
    private var logFile: File? = null

    // 初始化日志文件
    fun init(context: Context) {
        if (logFile == null) {
            val logDir = context.getExternalFilesDir("Logs")?.apply {
                if (!exists()) {
                    mkdirs()
                }
            }
            logFile = File(logDir, LOG_FILE_NAME)
        }
    }

    // 写日志到文件
    private fun writeLog(message: String) {
        try {
            logFile?.let {
                val fileWriter = FileWriter(it, true) // true 表示追加模式
                fileWriter.append(message)
                fileWriter.append("\n")
                fileWriter.close()
            }
        } catch (e: IOException) {
            e.printStackTrace()
        }
    }

    // 日志输出函数
    fun log(tag: String, message: String) {
        // 创建日志内容
        val timeStamp = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(Date())
        val logMessage = "[$timeStamp] [$tag] $message"

        // 打印到 Logcat
        Log.d(tag, logMessage)

        // 写入文件
        writeLog(logMessage)
    }

    // 输出错误日志
    fun logError(tag: String, message: String) {
        val timeStamp = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(Date())
        val logMessage = "[$timeStamp] [ERROR] [$tag] $message"
        // 打印到 Logcat
        Log.e(tag, logMessage)
        // 写入文件
        writeLog(logMessage)
    }
}
